#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f;
ll n,mod=998244353;
ll p[300010];
ll q[300010];
ll f[300010];
ll l[300010];
ll s[300010];
void init() {
for(int i=1;i<=n+1;i++) p[i]=q[i]=f[i]=l[i]=s[i]=0;
}
int main() {
int t;
cin>>t;
while(t--) {
cin>>n;
init();
for(int i=1;i<=n;i++) cin>>p[i];
l[1]=0,p[n+1]=2e16;
for(int i=2;i<=n+1;i++) {
int x=i-1;
while(x&&p[x]>=p[i]) x=l[x];
l[i]=x;
}
f[0]=q[0]=s[0]=1;
for(int i=1;i<=n+1;i++) {
f[i]=((s[i-1]-s[l[i]]+q[l[i]])%mod+mod)%mod;
if(l[i]) q[i]=(f[i]+q[l[i]])%mod;
else q[i]=f[i];
s[i]=(s[i-1]+f[i])%mod;
}
// for(int i=1;i<=n;i++) cout<<f[i]<<' ';
// cout<<endl;
cout<<f[n+1]<<'\n';
}
return 0;
}
1436A - Reorder | 1363C - Game On Leaves |
1373C - Pluses and Minuses | 1173B - Nauuo and Chess |
318B - Strings of Power | 1625A - Ancient Civilization |
864A - Fair Game | 1663B - Mike's Sequence |
448A - Rewards | 1622A - Construct a Rectangle |
1620A - Equal or Not Equal | 1517A - Sum of 2050 |
620A - Professor GukiZ's Robot | 1342A - Road To Zero |
1520A - Do Not Be Distracted | 352A - Jeff and Digits |
1327A - Sum of Odd Integers | 1276A - As Simple as One and Two |
812C - Sagheer and Nubian Market | 272A - Dima and Friends |
1352C - K-th Not Divisible by n | 545C - Woodcutters |
1528B - Kavi on Pairing Duty | 339B - Xenia and Ringroad |
189A - Cut Ribbon | 1182A - Filling Shapes |
82A - Double Cola | 45A - Codecraft III |
1242A - Tile Painting | 1663E - Are You Safe |